package controlador;

import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import entidades.Patente;
import entidades.Proveedor;
import entidades.iOperaciones;

public class CdPatente implements iOperaciones{
	Patente EPatente = new Patente();

	CsConexion con = CsConexion.getConnection();

	@Override
	public boolean agregar(Object nuevo) throws ClassNotFoundException,
			InstantiationException, IllegalAccessException, SQLException {
		// TODO Auto-generated method stub
		EPatente=(Patente) nuevo;

		try
		{  
		con.consultasql="insert into patente(codigoPate,nombre,existencias,preciof,descuento,laboratorio,formula,preciop,idProveedor) values('"+EPatente.getCodigoPate()+"','"+EPatente.getNombre()+"','"+EPatente.getExistencias()+"','"+EPatente.getPreciof()+"','"+EPatente.getDescuento()+"','"+EPatente.getLaboratorio()+"','"+EPatente.getFormula()+"','"+EPatente.getPreciop()+"','"+EPatente.getProveedor().getIdProveedor()+"')";
		//con.consultasql="insert into caja(numerocaja,descripcion) values ('"+ECaja.getnCaja()+"','"+ECaja.getDescripcion()+"')";
			con.instruccion.executeUpdate(con.consultasql);//ejecutar la consulta
			return true;
		}
		catch(Exception e)
		{
			System.out.println("error: " + e);
			return false;
		}
	}

	@Override
	public boolean actualizar(Object modificado) throws ClassNotFoundException,
			InstantiationException, IllegalAccessException, SQLException {
		// TODO Auto-generated method stub
		EPatente=(Patente) modificado;
		try
		{  
			con.consultasql="update patente set codigoPate='"+EPatente.getCodigoPate()+"',nombre='"+EPatente.getNombre()+"',existencias= '"+EPatente.getExistencias()+"',preciof='"+EPatente.getPreciof()+"',descuento='"+EPatente.getDescuento()+"',laboratorio='"+EPatente.getLaboratorio()+"',formula='"+EPatente.getFormula()+"',preciop='"+EPatente.getPreciop()+"',idProveedor='"+EPatente.getProveedor().getIdProveedor()+"' where codigoPate='"+EPatente.getCodigoPate()+"'";
			con.instruccion.executeUpdate(con.consultasql);//ejecutar la consulta
			return true;
		}
		catch(Exception e)
		{
			System.out.println("error: " + e);
			return false;
		}
	}

	@Override
	public boolean eliminar(Object eliminado) throws ClassNotFoundException,
			InstantiationException, IllegalAccessException, SQLException {
		// TODO Auto-generated method stub
		EPatente=(Patente) eliminado;
		try
		{  
			con.consultasql="delete from patente where patente. codigoPate='"+EPatente.getCodigoPate()+"'LIMIT 1";
			con.instruccion.executeUpdate(con.consultasql);//ejecutar la consulta
			
			return true;
			
		}
		catch(Exception e)
		{
			System.out.println("error: " + e);
			return false;
		}
	}

	@Override
	public List<Object> listar() throws ClassNotFoundException,
			InstantiationException, IllegalAccessException, SQLException {
		// TODO Auto-generated method stub
		List<Object>lista= new ArrayList <Object>();
		try{
			con.consultasql="select p.codigoPate,p.nombre,p.existencias,p.preciof,p.descuento,p.laboratorio,p.formula,p.preciop,pro.idProveedor,pro.nombre as nomProveedor from patente as p join proveedor as pro on pro.idProveedor =p.idProveedor";
			con.resultado=con.instruccion.executeQuery(con.consultasql);
			while(con.resultado.next()){
				Patente registro = new Patente();
				Proveedor proveedorreg= new Proveedor();
				registro.setCodigoPate(con.resultado.getString("codigoPate"));
				registro.setNombre(con.resultado.getString("nombre"));
				registro.setExistencias(con.resultado.getInt("existencias"));
				registro.setPreciof(con.resultado.getFloat("preciof"));
				registro.setDescuento(con.resultado.getString("descuento"));
				registro.setLaboratorio(con.resultado.getString("laboratorio"));
				registro.setFormula(con.resultado.getString("formula"));
				registro.setPreciop(con.resultado.getFloat("preciop"));
				
				
				proveedorreg.setIdProveedor(con.resultado.getInt("idProveedor"));
				proveedorreg.setNombre(con.resultado.getString("nomProveedor"));
				registro.setProveedor(proveedorreg);
				
				
				lista.add(registro);
			}
		}
		catch(Exception e)
		{
			System.out.println("error: " + e);
		}
		return lista;
	}

}


